"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/3/13 13:38
@Description :   类装饰器的使用
前面在定义装饰器时都是通过定义闭包函数的形式实现，装饰器也可以通过类的形式定义
"""


class MyDecorator:
    def __init__(self, func):
        self.__func = func

    # def method(self, a, b):
    #     print('----------加法运算---------')
    #     return self.__func(a, b)

    # 创建的对象实例可以被调用    'MyDecorator' object is not callable
    def __call__(self, *args, **kwargs):
        print('-------加法运算---------')
        result = self.__func(*args, **kwargs)
        return result


@MyDecorator  # 类装饰器的语法糖    等价    add = MyDecorator(add)
def add(a, b):
    return a + b

#  普通调用  改变原始函数的使用方式
# add = MyDecorator(add)
# result = add(1, 2)
# print(result)

result = add(1, 2)
print(result)
